package com.szl.agentdemo;

import java.lang.instrument.Instrumentation;
import java.lang.instrument.UnmodifiableClassException;

public class Agent {


    public static void premain(String agentArgs, Instrumentation inst) {
        System.out.println("agentArgs : " + agentArgs);
        System.out.println("premain方法体内。。。");
//        inst.addTransformer(new MyTransformer());
//        inst.addTransformer(new MyTransformer(), true);
    }


    /**
     * 以Attach的方式载入，在Java程序启动后执行
     */
    public static void agentmain(String agentArgs, Instrumentation inst) throws UnmodifiableClassException {
//        System.out.println("agentArgs : " + agentArgs);
//        System.out.println("Attach方式。。。");
        System.out.println("================================agentmain================================");
        MyTransformer myTransformer = new MyTransformer();
        inst.addTransformer(myTransformer,true);
        Class[] allLoadedClasses = inst.getAllLoadedClasses();
        for(Class cls : allLoadedClasses){
            if(cls.getName().equals("com.szl.code.Util")){
                inst.retransformClasses(cls);
            }
        }
//        inst.removeTransformer(myTransformer);
    }
}
